#父级目录
cmake_minimum_required(VERSION 3.5)
set(CMAKE_BUILD_TYPE Debug)

project(OpenCV_Picture)#这行定义了项目的名称为“OpenCV_Picture”。

#此命令将当前目录中的所有源代码文件收集到一个变量DIR_SRCS中
aux_source_directory(. DIR_SRCS)
#这行代码指示CMake去处理子目录Code中的CMakeLists.txt文件，这意味着Code目录中可能包含有其他源文件或子项目
add_subdirectory(Code)


add_executable(Main main.cpp)#这行代码指定从main.cpp源文件创建一个名为Main的可执行文件
#这行代码指示Main可执行文件需要链接一个名为child的目标库，这个库可能是之前在子目录Code的CMakeLists.txt中定义的
target_link_libraries(Main child)
#这行代码添加了项目当前源目录下的Code文件夹作为Main可执行文件的公共包含目录，使得Main可以包含该目录下的头文件
target_include_directories(Main PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Code)

#这一行设置了OpenCV的安装目录，这个目录将用于之后查找OpenCV的头文件和库文件
set(OpenCV_DIR "D:/Package_Control/OpenCV/opencv_install/")
#这行代码告诉CMake去查找OpenCV库，并且这个库对于项目是必须的。如果找不到，CMake配置会失败
find_package(OpenCV REQUIRED)
#这段代码是条件判断，如果找到了OpenCV库，就会将OpenCV的头文件目录添加到Main可执行文件的包含路径中，并将OpenCV的库文件链接到Main可执行文件
if(OpenCV_FOUND)
    target_include_directories(Main PUBLIC ${OpenCV_INCLUDE_DIRS})
    target_link_libraries(Main ${OpenCV_LIBS})
 
endif()

# Set warning flags for GCC and Clang
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
endif()

